#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>

int main()
{
  int var = 10;
  printf("father: the value of var:%d the address of var:%p\n", var, &var);
  pid_t id = fork(); 
  if(id < 0) { perror("fork err"); exit(1); }
  else if(id == 0)
  {
    var = 20;
    printf("child: the value of var:%d the address of var:%p\n", var, &var);
  }
  else 
  {
    int status = 0;
    waitpid(id, &status, 0);
  }
  return 0;
}

//int global_init_var1 = 10;
//int global_init_var2 = 20;
//int global_init_var3 = 30;
//
//int global_uninit_var1;
//int global_uninit_var2;
//
//int main()
//{
//  int st_var1 = 10;
//  int st_var2 = 20;
//  int st_var3 = 20;
//  
//  int* hp_var1 = (int*)malloc(sizeof(int));
//  int* hp_var2 = (int*)malloc(sizeof(int));
//  int* hp_var3 = (int*)malloc(sizeof(int));
//
//  printf(" \
//      global_init_var1: %p\n \
//      global_init_var2: %p\n \
//      global_init_var3: %p\n \
//      global_uninit_var1: %p\n \
//      global_uninit_var2: %p\n \
//      st_var1: %p\n \
//      st_var2: %p\n \
//      st_var3: %p\n \
//      hp_var1: %p\n \
//      hp_var2: %p\n \
//      hp_var3: %p\n",
//      &global_init_var1, &global_init_var2, &global_init_var3, &global_uninit_var1, &global_uninit_var2, 
//      &st_var1, &st_var2, &st_var3,
//      hp_var1, hp_var2, hp_var3);
//
//  return 0;
//}
